{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "44146ac6-ba47-4414-93e5-fce9218fb1aa",
   "metadata": {},
   "source": [
    "Chapter 17\n",
    "\n",
    "# 二分法\n",
    "Book_3《数学要素》 | 鸢尾花书：从加减乘除到机器学习 (第二版)"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3012d23f-a205-49a7-aebe-3156e46a9028",
   "metadata": {},
   "source": [
    "\n",
    "\n",
    "这段代码实现了使用**二分法**对函数的根进行求解，并且通过可视化的方式展示了二分法的迭代过程以及收敛性。下面从数学角度详细描述各部分的功能及其数学背景。\n",
    "\n",
    "---\n",
    "\n",
    "### 代码描述及数学分析\n",
    "\n",
    "#### 1. **绘图参数设置**\n",
    "代码首先使用 `matplotlib` 设置绘图参数，包括字体、刻度和网格样式。主要是为了增强可视化效果，便于后续二分法迭代结果的展示。\n",
    "\n",
    "#### 2. **目标函数定义**\n",
    "目标函数被定义为：\n",
    "$$\n",
    "f(x) = 2x^2 - 8x + 1\n",
    "$$\n",
    "这个函数是一个二次多项式，其根可以通过求解 $f(x) = 0$ 得到。`sympy` 提供符号处理功能，而 `lambdify` 将符号表达式转换为可执行的 Python 函数，以便后续数值计算。\n",
    "\n",
    "#### 3. **二分法求根**\n",
    "二分法是一种基础的数值分析方法，用于求解函数 $f(x)$ 的根。该方法的数学思想是基于连续函数在区间上的**中值定理**：如果 $f(a) \\cdot f(b) < 0$，那么 $f(x)$ 在区间 $[a, b]$ 内至少存在一个根。具体步骤如下：\n",
    "\n",
    "1. 初始区间为 $[a, b]$，其中 $f(a) \\cdot f(b) < 0$。\n",
    "2. 计算中点 $c = \\frac{a + b}{2}$，并检查 $f(c)$ 的符号：\n",
    "   - 若 $f(c) = 0$，则 $c$ 是精确根；\n",
    "   - 若 $f(c) \\cdot f(a) < 0$，则根在 $[a, c]$ 内；\n",
    "   - 否则根在 $[c, b]$ 内。\n",
    "3. 重复上述步骤，直到区间长度小于指定容差 $tol$ 或达到最大迭代次数。\n",
    "\n",
    "代码实现的核心数学公式为：\n",
    "$$\n",
    "c_k = \\frac{a_k + b_k}{2}\n",
    "$$\n",
    "其中 $a_k$ 和 $b_k$ 是第 $k$ 次迭代的区间端点。\n",
    "\n",
    "函数 `bisection_method` 返回：\n",
    "- 近似根 $c$；\n",
    "- 迭代次数；\n",
    "- 每次迭代的区间端点和中点记录（便于可视化）。\n",
    "\n",
    "#### 4. **二分法的可视化**\n",
    "二分法过程的可视化包括以下两部分：\n",
    "1. **函数曲线及区间变化**：展示每次迭代时的区间变化和函数值的对应关系。\n",
    "   - 横轴表示 $x$ 值；\n",
    "   - 纵轴表示 $f(x)$ 值；\n",
    "   - 每次迭代的区间用线段标记，终点表示区间端点 $a_k$ 和 $b_k$。\n",
    "   \n",
    "2. **收敛性分析**：绘制每次迭代的近似根 $c_k$ 随迭代次数的变化图，反映收敛速率。\n",
    "\n",
    "#### 5. **测试部分**\n",
    "调用 `bisection_method` 对函数 $f(x)$ 在区间 $[-2, 2]$ 上的根进行求解，并使用 `visualize_bisection` 和 `visualize_convergence` 展示结果。\n",
    "- 起始区间 $[-2, 2]$ 满足 $f(-2) \\cdot f(2) < 0$，因此二分法可以应用。\n",
    "- 输出近似根 $c$ 及迭代次数，验证方法的有效性。\n",
    "\n",
    "---\n",
    "\n",
    "### 数学背景补充\n",
    "1. **收敛性**：\n",
    "   二分法的误差界限在每次迭代后减半。若初始区间长度为 $|b - a|$，则经过 $n$ 次迭代后，误差为：\n",
    "   $$\n",
    "   \\text{误差} \\leq \\frac{|b - a|}{2^n}\n",
    "   $$\n",
    "   这表明二分法以线性收敛速度逼近根。\n",
    "\n",
    "2. **适用范围**：\n",
    "   二分法要求函数在初始区间内连续，且 $f(a) \\cdot f(b) < 0$。对于无解或多解情况，需结合其他方法分析。\n",
    "\n",
    "3. **图示解释**：\n",
    "   - 可视化的区间收缩和根的逐步逼近说明了二分法的本质：通过不断缩小区间逐步逼近目标根。\n",
    "   - 收敛图展示了 $c_k$ 随迭代次数单调收敛于真实根的过程。\n",
    "\n",
    "--- \n",
    "\n",
    "通过此代码及可视化过程，可以直观地理解二分法的理论和实际应用，是数值分析学习的良好案例。"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "956fbbaf-244c-4262-8e73-30097b04b2d6",
   "metadata": {},
   "source": [
    "## 导入包"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 1,
   "id": "21de1f50-62b5-47b5-addf-b4135d1ec59a",
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "from sympy import symbols, lambdify"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "id": "2bec98fc-021d-4115-b430-2b23ee32198a",
   "metadata": {},
   "outputs": [],
   "source": [
    "p = plt.rcParams  # 获取默认绘图参数\n",
    "p[\"font.sans-serif\"] = [\"Roboto\"]  # 设置无衬线字体为 Roboto\n",
    "p[\"font.weight\"] = \"light\"  # 设置字体粗细为 light\n",
    "p[\"ytick.minor.visible\"] = True  # 显示 y 轴的小刻度\n",
    "p[\"xtick.minor.visible\"] = True  # 显示 x 轴的小刻度\n",
    "p[\"axes.grid\"] = True  # 启用坐标轴网格\n",
    "p[\"grid.color\"] = \"0.5\"  # 设置网格颜色为灰色\n",
    "p[\"grid.linewidth\"] = 0.5  # 设置网格线宽度"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "034768fe-d6c8-45b1-978e-7a4024f37e1a",
   "metadata": {},
   "source": [
    "## 使用 sympy 定义目标函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "id": "35847f8f-7ee1-47fd-be56-9f862c3e7037",
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/latex": [
       "$\\displaystyle 2 x^{2} - 8 x + 1$"
      ],
      "text/plain": [
       "2*x**2 - 8*x + 1"
      ]
     },
     "execution_count": 3,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "x = symbols('x')\n",
    "func = 2*x**2 - 8*x + 1\n",
    "func"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "id": "65cab65a-16dd-40de-b387-b5ba72243f2b",
   "metadata": {},
   "outputs": [],
   "source": [
    "# 将函数转换为可执行的 Python 函数\n",
    "f = lambdify(x, func, 'numpy')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "b7f79240-8a86-43d5-9346-8f269a237d3a",
   "metadata": {},
   "source": [
    "## 二分法求根函数"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "id": "55370101-28ee-492a-a17b-0fb0f3f1b944",
   "metadata": {},
   "outputs": [],
   "source": [
    "def bisection_method(f, a, b, tol=1e-6, max_iter=100):\n",
    "    if f(a) * f(b) > 0:\n",
    "        raise ValueError(\"函数在区间两端的符号相同，无法使用二分法。\")\n",
    "\n",
    "    iter_count = 0\n",
    "    a_vals, b_vals, c_vals = [a], [b], []  # 记录区间变化以便可视化\n",
    "\n",
    "    while (b - a) / 2 > tol and iter_count < max_iter:\n",
    "        c = (a + b) / 2\n",
    "        c_vals.append(c)\n",
    "        if f(c) == 0:  # 找到精确根\n",
    "            break\n",
    "        elif f(c) * f(a) < 0:\n",
    "            b = c\n",
    "        else:\n",
    "            a = c\n",
    "\n",
    "        a_vals.append(a)\n",
    "        b_vals.append(b)\n",
    "        iter_count += 1\n",
    "\n",
    "    return c, iter_count, a_vals, b_vals, c_vals"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "c95d1be2-0113-4144-8bf6-e4d2248a976d",
   "metadata": {},
   "source": [
    "## 可视化二分过程"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "id": "62e7cfb8-86e4-4788-9614-84cd836e83f8",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_bisection(f, a_vals, b_vals, c_vals):\n",
    "    x = np.linspace(-3, 3, 500)\n",
    "    y = f(x)\n",
    "\n",
    "    plt.figure(figsize=(6, 6))\n",
    "    plt.plot(x, y, color=\"blue\")\n",
    "    # plt.axhline(0, color=\"black\", linewidth=0.8, linestyle=\"-\")\n",
    "\n",
    "    # 可视化每一步的区间\n",
    "    for i, (a, b, c) in enumerate(zip(a_vals, b_vals, c_vals)):\n",
    "        plt.plot([a, b], [f(a), f(b)], \"kx-\", lw = '0.2')\n",
    "\n",
    "    # plt.title(\"Bisection Method Visualization\")\n",
    "    plt.xlabel(\"x\")\n",
    "    plt.ylabel(\"f(x)\")\n",
    "    plt.xlim(-3,3)\n",
    "    plt.grid(True)\n",
    "    # plt.savefig('数值求根_二分法.svg')\n",
    "    plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "id": "3246ea0e-6e91-4ab3-adb1-109e7d2fbcab",
   "metadata": {},
   "outputs": [],
   "source": [
    "def visualize_convergence(x_vals):\n",
    "\n",
    "    plt.figure(figsize=(6, 3))\n",
    "    plt.plot(np.arange(len(x_vals)),x_vals, marker = 'x')\n",
    "    plt.xlim(0,len(x_vals) - 1)\n",
    "    plt.xlabel('Iteration')\n",
    "    plt.ylabel('Approximated root')\n",
    "    # plt.savefig('数值求根_二分法_收敛.svg')"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "2f4492e4-222c-4a27-8ee9-7e16f6165d06",
   "metadata": {},
   "source": [
    "## 测试"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "id": "72dbd493-8071-4f04-8cb2-f5410fab80db",
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "求得根的近似值: 0.12917137145996094\n",
      "迭代次数: 21\n"
     ]
    },
    {
     "data": {
      "image/png": "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AunZE/r3h+xseOyxKydyXq1OnTq0bNmShIQEDTATEfEyKhZSYP/6FwQGwqpVkJBw/cdUrFiRqKgoZs2axblz55yaT0REzFGxkAKrWROee87a/utf4fTp6z8uKCiIYcOGsXDhQk6cOOG0fCIiYo6KhRTKU09B7dpw7BjExt74cT4+PgwaNIgtW7awd+9e5wUUEREjVCykUAIDrRM4wfpoJDX15o+/++67SUtLY/PmzcUfTkREjFGxkELr3Rv69oVLl6wR6783NqRdu3YEBgayYsUK5wQUERGnU7GQInnjDevoxYoVMGfO7z++UaNG1K1bVwPMREQ8lIqFFMltt8Gzz1rbTzwBZ878/nM0wExExHOpWEiRPf20VTCOHoW//z1/zwkNDSU6OloDzEREPIyKhRRZUNCVEzn/+U/YvTt/zytRogTDhg1j1apVGmAmIuIhPLJYxMXFER4eTkREhOkoXqNvX+tkzqys/J3Imctms9G/f3++//57vvvuu+INKSIixc4ji0VMTAypqamkpKSYjuJV3njDmieybFn+TuS8WmRkJBcuXGDdunXFE05ERJzCI4uFmFG7NowbZ23/5S95R6vnR8uWLalYsSKLFy92eDYREXEOFQtxqGeesUar//gjjB9f8OfXrVuXFi1aMHv2bHJychwfUEREipWKhThUYCD85z/W9ltvwZYtBX+NihUr0qdPH+Lj4zXATETEzahYiMPddRcMGwY5OTB6tDVivaCCg4MZOnQoSUlJGmAmIuJGVCykWPzznxAaCps3w7vvFu41fH19GTx4MJs3b+b77793bEARESkWKhZSLCpVgpdesrbHjYPjxwv/Wr169eKnn35iS2E+VxEREadSsZBi8+ij0LKldXXIE08U7bXuvPNOAgICWLlypWPCiYhIsVCxkGLj6wvvvAM+PhAfb61vURSNGjWidu3aGmAmIuLCVCykWLVoAY89Zm3HxMCFC0V7verVq9OlSxfi4+PJysoqekAREXEoFQspdrGxcOutsHcvvPJK0V+vTJkyREdHM2fOHNLT04v+giIi4jB+pgMAHDx4kMTERIKDg8nKyqJ+/fp06dIFgB07drBy5UqCgoI4c+YM0dHRVKlSxXBiKYiQEJg6FYYMsU7ovPdeaxGtosgdYDZ//nxatGhBtWrVHJJVRESKxiWKxcKFCxkzZszlr+fNm0da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",
      "text/plain": [
       "<Figure size 600x600 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    },
    {
     "data": {
      "image/png": "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",
      "text/plain": [
       "<Figure size 600x300 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "try:\n",
    "    root, iterations, a_vals, b_vals, c_vals = bisection_method(f, a=-2, b=2)\n",
    "    print(f\"求得根的近似值: {root}\")\n",
    "    print(f\"迭代次数: {iterations}\")\n",
    "\n",
    "    # 可视化\n",
    "    visualize_bisection(f, a_vals, b_vals, c_vals)\n",
    "    visualize_convergence(c_vals)\n",
    "\n",
    "except ValueError as e:\n",
    "    print(e)"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.12.7"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
